<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>binmode - Perldoc Browser</title>
    <link rel="search" href="https://perldoc.perl.org/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser">
    <link rel="canonical" href="https://perldoc.perl.org/functions/binmode">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/stackoverflow-light.min.css" integrity="sha512-cG1IdFxqipi3gqLmksLtuk13C+hBa57a6zpWxMeoY3Q9O6ooFxq50DayCdm0QrDgZjMUn23z/0PMZlgft7Yp5Q==" crossorigin="anonymous" />
    <style>
      body {
        background: #f4f4f5;
        color: #020202;
      }
      .navbar-dark {
        background-image: -webkit-linear-gradient(top, #005f85 0, #002e49 100%);
        background-image: -o-linear-gradient(top, #005f85 0, #002e49 100%);
        background-image: linear-gradient(to bottom, #005f85 0, #002e49 100%);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff005f85', endColorstr='#ff002e49', GradientType=0);
        background-repeat: repeat-x;
      }
      .navbar-dark .navbar-nav .nav-link,
      .navbar-dark .navbar-nav .nav-link:focus { color: #fff }
      .navbar-dark .navbar-nav .nav-link:hover { color: #ffef68 }
      #wrapperlicious {
        margin: 0 auto;
        font: 0.9em 'Helvetica Neue', Helvetica, sans-serif;
        font-weight: normal;
        line-height: 1.5em;
        margin: 0;
        padding: 0;
      }
      #wrapperlicious h1 { font-size: 1.5em }
      #wrapperlicious h2 { font-size: 1.3em }
      #wrapperlicious h3 { font-size: 1.1em }
      #wrapperlicious h4 { font-size: 0.9em }
      #wrapperlicious h1, #wrapperlicious h2, #wrapperlicious h3,
      #wrapperlicious h4, #wrapperlicious dt {
        color: #020202;
        margin-top: 1em;
        margin-bottom: 1em;
        position: relative;
        font-weight: bold;
      }
      #wrapperlicious a { color: inherit; text-decoration: underline }
      #wrapperlicious #toc { text-decoration: none }
      #wrapperlicious a:hover { color: #2a2a2a }
      #wrapperlicious a img { border: 0 }
      #wrapperlicious :not(pre) > code {
        color: inherit;
        background-color: rgba(0, 0, 0, 0.04);
        border-radius: 3px;
        font: 0.9em Consolas, Menlo, Monaco, monospace;
        padding: 0.3em;
      }
      #wrapperlicious dd {
        margin: 0;
        margin-left: 2em;
      }
      #wrapperlicious dt {
        color: #2a2a2a;
        font-weight: bold;
        margin-left: 0.9em;
      }
      #wrapperlicious p {
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious li > p {
        margin-bottom: 0;
        margin-top: 0;
      }
      #wrapperlicious pre {
        border: 1px solid #c1c1c1;
        border-radius: 3px;
        font: 100% Consolas, Menlo, Monaco, monospace;
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious pre > code {
        display: block;
        background-color: #f6f6f6;
        font: 0.9em Consolas, Menlo, Monaco, monospace;
        line-height: 1.5em;
        text-align: left;
        white-space: pre;
        padding: 1em;
      }
      #wrapperlicious dl, #wrapperlicious ol, #wrapperlicious ul {
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious ul {
        list-style-type: square;
      }
      #wrapperlicious ul ul {
        margin-bottom: 0px;
        margin-top: 0px;
      }
      #footer {
        font-size: 0.8em;
        padding-top: 0.5em;
        text-align: center;
      }
      #more {
        display: inline;
        font-size: 0.8em;
      }
      #perldocdiv {
        background-color: #fff;
        border: 1px solid #c1c1c1;
        border-bottom-left-radius: 5px;
        border-bottom-right-radius: 5px;
        margin-left: auto;
        margin-right: auto;
        padding: 3em;
        padding-top: 1em;
        max-width: 960px;
      }
      #moduleversion { float: right }
      #wrapperlicious .leading-notice {
        font-style: italic;
        padding-left: 1em;
        margin-top: 1em;
        margin-bottom: 1em;
      }
      #wrapperlicious .permalink {
        display: none;
        left: -0.75em;
        position: absolute;
        padding-right: 0.25em;
        text-decoration: none;
      }
      #wrapperlicious h1:hover .permalink, #wrapperlicious h2:hover .permalink,
      #wrapperlicious h3:hover .permalink, #wrapperlicious h4:hover .permalink,
      #wrapperlicious dt:hover .permalink {
        display: block;
      }
    </style>
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-KVNWBNT5FB"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-KVNWBNT5FB');
      gtag('config', 'UA-50555-3');
    </script>
  </head>
  <body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark justify-content-between">
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="https://perldoc.perl.org/">Perldoc Browser</a>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="binmode.html#" id="dropdownlink-stable" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">5.35.0</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-stable">
          <a class="dropdown-item" href="https://perldoc.perl.org/functions/binmode">Latest</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.2/functions/binmode">5.38.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.1/functions/binmode">5.38.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0/functions/binmode">5.38.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.3/functions/binmode">5.36.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.2/functions/binmode">5.36.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.1/functions/binmode">5.36.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.0/functions/binmode">5.36.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.3/functions/binmode">5.34.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.2/functions/binmode">5.34.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.1/functions/binmode">5.34.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.0/functions/binmode">5.34.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.32.1/functions/binmode">5.32.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.32.0/functions/binmode">5.32.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.3/functions/binmode">5.30.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.2/functions/binmode">5.30.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.1/functions/binmode">5.30.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.0/functions/binmode">5.30.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.3/functions/binmode">5.28.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.2/functions/binmode">5.28.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.1/functions/binmode">5.28.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.0/functions/binmode">5.28.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.3/functions/binmode">5.26.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.2/functions/binmode">5.26.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.1/functions/binmode">5.26.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.0/functions/binmode">5.26.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.4/functions/binmode">5.24.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.3/functions/binmode">5.24.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.2/functions/binmode">5.24.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.1/functions/binmode">5.24.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.0/functions/binmode">5.24.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.4/functions/binmode">5.22.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.3/functions/binmode">5.22.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.2/functions/binmode">5.22.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.1/functions/binmode">5.22.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.0/functions/binmode">5.22.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.3/functions/binmode">5.20.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.2/functions/binmode">5.20.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.1/functions/binmode">5.20.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.0/functions/binmode">5.20.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.4/functions/binmode">5.18.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.3/functions/binmode">5.18.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.2/functions/binmode">5.18.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.1/functions/binmode">5.18.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.0/functions/binmode">5.18.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.3/functions/binmode">5.16.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.2/functions/binmode">5.16.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.1/functions/binmode">5.16.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.0/functions/binmode">5.16.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.4/functions/binmode">5.14.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.3/functions/binmode">5.14.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.2/functions/binmode">5.14.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.1/functions/binmode">5.14.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.0/functions/binmode">5.14.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.5/functions/binmode">5.12.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.4/functions/binmode">5.12.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.3/functions/binmode">5.12.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.2/functions/binmode">5.12.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.1/functions/binmode">5.12.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.0/functions/binmode">5.12.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.10.1/functions/binmode">5.10.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.10.0/functions/binmode">5.10.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.9/functions/binmode">5.8.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.8/functions/binmode">5.8.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.7/functions/binmode">5.8.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.6/functions/binmode">5.8.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.5/functions/binmode">5.8.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.4/functions/binmode">5.8.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.3/functions/binmode">5.8.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.2/functions/binmode">5.8.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.1/functions/binmode">5.8.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.0/functions/binmode">5.8.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.2/functions/binmode">5.6.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.1/functions/binmode">5.6.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.0/functions/binmode">5.6.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_04/functions/binmode">5.005_04</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_03/functions/binmode">5.005_03</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_02/functions/binmode">5.005_02</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_01/functions/binmode">5.005_01</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005/functions/binmode">5.005</a>
        </div>
      </li>
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="binmode.html#" id="dropdownlink-dev" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dev</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-dev">
          <a class="dropdown-item" href="https://perldoc.perl.org/blead/functions/binmode">blead</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.6/functions/binmode">5.39.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.5/functions/binmode">5.39.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.4/functions/binmode">5.39.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.3/functions/binmode">5.39.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.2/functions/binmode">5.39.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.1/functions/binmode">5.39.1</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0-RC2/functions/binmode">5.38.0-RC2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0-RC1/functions/binmode">5.38.0-RC1</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.11/functions/binmode">5.37.11</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.10/functions/binmode">5.37.10</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.9/functions/binmode">5.37.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.8/functions/binmode">5.37.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.7/functions/binmode">5.37.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.6/functions/binmode">5.37.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.5/functions/binmode">5.37.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.4/functions/binmode">5.37.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.3/functions/binmode">5.37.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.2/functions/binmode">5.37.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.1/functions/binmode">5.37.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.0/functions/binmode">5.37.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.11/functions/binmode">5.35.11</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.10/functions/binmode">5.35.10</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.9/functions/binmode">5.35.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.8/functions/binmode">5.35.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.7/functions/binmode">5.35.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.6/functions/binmode">5.35.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.5/functions/binmode">5.35.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.4/functions/binmode">5.35.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.3/functions/binmode">5.35.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.2/functions/binmode">5.35.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.1/functions/binmode">5.35.1</a>
          <a class="dropdown-item active" href="binmode.html">5.35.0</a>
        </div>
      </li>
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="binmode.html#" id="dropdownlink-nav" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-nav">
          <a class="dropdown-item" href="../perl.html">Perl</a>
          <a class="dropdown-item" href="../perlintro.html">Intro</a>
          <a class="dropdown-item" href="../perl.html#Tutorials">Tutorials</a>
          <a class="dropdown-item" href="../perlfaq.html">FAQs</a>
          <a class="dropdown-item" href="../perl.html#Reference-Manual">Reference</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="../perlop.html">Operators</a>
          <a class="dropdown-item" href="../functions.html">Functions</a>
          <a class="dropdown-item" href="../variables.html">Variables</a>
          <a class="dropdown-item" href="../modules.html">Modules</a>
          <a class="dropdown-item" href="../perlutil.html">Utilities</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="../perlcommunity.html">Community</a>
          <a class="dropdown-item" href="../perlhist.html">History</a>
        </div>
      </li>
    </ul>
    <ul class="navbar-nav">
      <script>
        function set_expand (expand) {
          var perldocdiv = document.getElementById('perldocdiv');
          var width = window.getComputedStyle(perldocdiv).getPropertyValue('max-width');
          var expanded = (width == '' || width == 'none') ? true : false;
          if (expand === null) {
            expand = !expanded;
          }
          if ((expand && !expanded) || (!expand && expanded)) {
            perldocdiv.style.setProperty('max-width', expand ? 'none' : '960px');
            var button_classlist = document.getElementById('content-expand-button').classList;
            if (expand) {
              button_classlist.add('btn-light');
              button_classlist.remove('btn-outline-light');
            } else {
              button_classlist.add('btn-outline-light');
              button_classlist.remove('btn-light');
            }
          }
          return expand;
        }
        function toggle_expand () {
          var expand = set_expand(null);
          document.cookie = 'perldoc_expand=' + (expand ? 1 : 0) + '; path=/; expires=Tue, 19 Jan 2038 03:14:07 UTC';
        }
        function read_expand () {
          return document.cookie.split(';').some(function (item) { return item.indexOf('perldoc_expand=1') >= 0 });
        }
        if (document.readyState === 'loading') {
          document.addEventListener('DOMContentLoaded', function () {
            if (read_expand()) {
              set_expand(true);
            }
          });
        } else if (read_expand()) {
          set_expand(true);
        }
      </script>
      <button id="content-expand-button" type="button" class="btn btn-outline-light d-none d-lg-inline-block mr-2" onclick="toggle_expand()">Expand</button>
    <ul>
    <form class="form-inline" method="get" action="https://perldoc.perl.org/5.35.0/search">
      <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search">
    </form>
  </div>
</nav>

    <div id="wrapperlicious" class="container-fluid">
      <div id="perldocdiv">
        <div id="links">
          <a href="../functions.html">functions</a>
            / <a href="binmode.html">binmode</a>
          <div id="more">
            (<a href="binmode.txt">source</a>,
            <a href="CORE.html#binmode-FILEHANDLE,-LAYER">CPAN</a>)
          </div>
        </div>
        <div class="leading-notice">
          You are viewing the version of this documentation from Perl 5.35.0.
            This is a development version of Perl.
        </div>
      <dl>

<dt id="binmode-FILEHANDLE,-LAYER"><a class="permalink" href="binmode.html#binmode-FILEHANDLE,-LAYER">#</a><a id="binmode"></a><a id="binmode-FILEHANDLE-LAYER"></a>binmode FILEHANDLE, LAYER     </dt>
<dd>

</dd>
<dt id="binmode-FILEHANDLE"><a class="permalink" href="binmode.html#binmode-FILEHANDLE">#</a><a id="binmode1"></a>binmode FILEHANDLE</dt>
<dd>

<p>Arranges for FILEHANDLE to be read or written in &quot;binary&quot; or &quot;text&quot; mode on systems where the run-time libraries distinguish between binary and text files. If FILEHANDLE is an expression, the value is taken as the name of the filehandle. Returns true on success, otherwise it returns <a href="undef.html"><code>undef</code></a> and sets <a href="../perlvar.html#%24%21"><code>$!</code></a> (errno).</p>

<p>On some systems (in general, DOS- and Windows-based systems) <a href="binmode.html"><code>binmode</code></a> is necessary when you&#39;re not working with a text file. For the sake of portability it is a good idea always to use it when appropriate, and never to use it when it isn&#39;t appropriate. Also, people can set their I/O to be by default UTF8-encoded Unicode, not bytes.</p>

<p>In other words: regardless of platform, use <a href="binmode.html"><code>binmode</code></a> on binary data, like images, for example.</p>

<p>If LAYER is present it is a single string, but may contain multiple directives. The directives alter the behaviour of the filehandle. When LAYER is present, using binmode on a text file makes sense.</p>

<p>If LAYER is omitted or specified as <code>:raw</code> the filehandle is made suitable for passing binary data. This includes turning off possible CRLF translation and marking it as bytes (as opposed to Unicode characters). Note that, despite what may be implied in <i>&quot;Programming Perl&quot;</i> (the Camel, 3rd edition) or elsewhere, <code>:raw</code> is <i>not</i> simply the inverse of <code>:crlf</code>. Other layers that would affect the binary nature of the stream are <i>also</i> disabled. See <a href="../PerlIO.html">PerlIO</a>, and the discussion about the PERLIO environment variable in <a href="../perlrun.html#PERLIO">perlrun</a>.</p>

<p>The <code>:bytes</code>, <code>:crlf</code>, <code>:utf8</code>, and any other directives of the form <code>:...</code>, are called I/O <i>layers</i>. The <a href="../open.html">open</a> pragma can be used to establish default I/O layers.</p>

<p><i>The LAYER parameter of the <a href="binmode.html"><code>binmode</code></a> function is described as &quot;DISCIPLINE&quot; in &quot;Programming Perl, 3rd Edition&quot;. However, since the publishing of this book, by many known as &quot;Camel III&quot;, the consensus of the naming of this functionality has moved from &quot;discipline&quot; to &quot;layer&quot;. All documentation of this version of Perl therefore refers to &quot;layers&quot; rather than to &quot;disciplines&quot;. Now back to the regularly scheduled documentation...</i></p>

<p>To mark FILEHANDLE as UTF-8, use <code>:utf8</code> or <code>:encoding(UTF-8)</code>. <code>:utf8</code> just marks the data as UTF-8 without further checking, while <code>:encoding(UTF-8)</code> checks the data for actually being valid UTF-8. More details can be found in <a href="../PerlIO::encoding.html">PerlIO::encoding</a>.</p>

<p>In general, <a href="binmode.html"><code>binmode</code></a> should be called after <a href="open.html"><code>open</code></a> but before any I/O is done on the filehandle. Calling <a href="binmode.html"><code>binmode</code></a> normally flushes any pending buffered output data (and perhaps pending input data) on the handle. An exception to this is the <code>:encoding</code> layer that changes the default character encoding of the handle. The <code>:encoding</code> layer sometimes needs to be called in mid-stream, and it doesn&#39;t flush the stream. <code>:encoding</code> also implicitly pushes on top of itself the <code>:utf8</code> layer because internally Perl operates on UTF8-encoded Unicode characters.</p>

<p>The operating system, device drivers, C libraries, and Perl run-time system all conspire to let the programmer treat a single character (<code>\n</code>) as the line terminator, irrespective of external representation. On many operating systems, the native text file representation matches the internal representation, but on some platforms the external representation of <code>\n</code> is made up of more than one character.</p>

<p>All variants of Unix, Mac OS (old and new), and Stream_LF files on VMS use a single character to end each line in the external representation of text (even though that single character is CARRIAGE RETURN on old, pre-Darwin flavors of Mac OS, and is LINE FEED on Unix and most VMS files). In other systems like OS/2, DOS, and the various flavors of MS-Windows, your program sees a <code>\n</code> as a simple <code>\cJ</code>, but what&#39;s stored in text files are the two characters <code>\cM\cJ</code>. That means that if you don&#39;t use <a href="binmode.html"><code>binmode</code></a> on these systems, <code>\cM\cJ</code> sequences on disk will be converted to <code>\n</code> on input, and any <code>\n</code> in your program will be converted back to <code>\cM\cJ</code> on output. This is what you want for text files, but it can be disastrous for binary files.</p>

<p>Another consequence of using <a href="binmode.html"><code>binmode</code></a> (on some systems) is that special end-of-file markers will be seen as part of the data stream. For systems from the Microsoft family this means that, if your binary data contain <code>\cZ</code>, the I/O subsystem will regard it as the end of the file, unless you use <a href="binmode.html"><code>binmode</code></a>.</p>

<p><a href="binmode.html"><code>binmode</code></a> is important not only for <a href="readline.html"><code>readline</code></a> and <a href="print.html"><code>print</code></a> operations, but also when using <a href="read.html"><code>read</code></a>, <a href="seek.html"><code>seek</code></a>, <a href="sysread.html"><code>sysread</code></a>, <a href="syswrite.html"><code>syswrite</code></a> and <a href="tell.html"><code>tell</code></a> (see <a href="../perlport.html">perlport</a> for more details). See the <a href="../perlvar.html#%24%2F"><code>$/</code></a> and <a href="../perlvar.html#%24%5C"><code>$\</code></a> variables in <a href="../perlvar.html">perlvar</a> for how to manually set your input and output line-termination sequences.</p>

<p>Portability issues: <a href="../perlport.html#binmode">&quot;binmode&quot; in perlport</a>.</p>

</dd>
</dl>


      </div>
      <div id="footer">
        <p>Perldoc Browser is maintained by Dan Book (<a href="https://metacpan.org/author/DBOOK">DBOOK</a>). Please contact him via the <a href="https://github.com/Grinnz/perldoc-browser/issues">GitHub issue tracker</a> or <a href="mailto:dbook@cpan.org">email</a> regarding any issues with the site itself, search, or rendering of documentation.</p>

<p>The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the <a href="https://github.com/Perl/perl5/issues">Perl issue tracker</a>, the <a href="https://lists.perl.org/list/perl5-porters.html">mailing list</a>, or <a href="https://kiwiirc.com/client/irc.perl.org/p5p">IRC</a> to report any issues with the contents or format of the documentation.</p>


      </div>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js" integrity="sha512-/DXTXr6nQodMUiq+IUJYCt2PPOUjrHJ9wFrqpJ3XkgPNOZVfMok7cRw6CSxyCQxXn6ozlESsSh1/sMCTF1rL/g==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" integrity="sha512-ubuT8Z88WxezgSqf3RLuNi5lmjstiJcyezx34yIU2gAHonIi27Na7atqzUZCOoY4CExaoFumzOsFQ2Ch+I/HCw==" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
    <script src="../../highlight.pack.js"></script>
    <script>hljs.highlightAll();</script>
  </body>
</html>
